package controller;

import java.util.ArrayList;
import java.util.Iterator;
import model.ICategoria;
import view.CategoriaGUI;

public class CategoriaCtrl implements ICategoriaCtrl{

    ICategoria model;
    CategoriaGUI categoriaGUI;

    public CategoriaCtrl(ICategoria model) {  
        this.model = model;             
        categoriaGUI = new CategoriaGUI(model, this); 
        categoriaGUI.criarTela();
    }
    
    private void setCategoria(int codigo,String descricao){
        model.setCodigo(codigo);
        model.setDescricao(descricao);
    }
    
    @Override
    public int getCodigo() {
        return model.getCodigo();
    }
    
    @Override
    public void inserir(int codigo,String descricao){         
        setCategoria(codigo, descricao);
        model.setProximoCodigo();              
        model.inserir();                   
    }
    
    @Override
    public void atualizar(int codigo,String descricao){
        setCategoria(codigo, descricao);             
        model.atualizar();        
    }
            
    @Override
    public void excluir(int codigo){
        model.setCodigo(codigo);
        model.excluir();
    }
    
    @Override
    public ArrayList pesquisar(int iOpcao, String iPesquisa) {        
        ArrayList<ICategoria> categorias = model.pesquisar(iOpcao, iPesquisa);
        ArrayList lstTemp = new ArrayList();
        ICategoria categoriaTemp;
        Iterator i = categorias.iterator();
        while (i.hasNext()) {            
            categoriaTemp = (ICategoria) i.next();
            lstTemp.add(new String[]{String.valueOf(categoriaTemp.getCodigo()), categoriaTemp.getDescricao()});            
        }        
        return lstTemp;
    }
    
    @Override
    public ArrayList getAll() {        
        ArrayList<ICategoria> categorias = model.getAll();
        ArrayList lstTemp = new ArrayList();
        ICategoria categoriaTemp;
        Iterator i = categorias.iterator();
        while (i.hasNext()) {            
            categoriaTemp = (ICategoria) i.next();
            lstTemp.add(new String[]{String.valueOf(categoriaTemp.getCodigo()), categoriaTemp.getDescricao()});            
        }        
        return lstTemp;         
               
    }
}
